Tap is a program that accurately derives a tempo reading from a user's tap input.
Unlike other tap algorithms such as those in drum machines and most sequencers, Tap displays a running average tempo starting with the very first tap and hence, it gets more accurate the longer one taps.
Other algorithms only take into account the last 4 or 8 taps and because the human finger is not that precise, nor will be the tempo.
This program is freeware. However, bug reports, suggestions and complaints will be appreciated. I can be reached on compuserve 72124,1331 or by mail: 157 W57th #1200, New York, NY 10019.
Future versions of Tap will hopefully use Midi and Audio as other sources of Tempo.
Changes from 1.1 > 1.2
Midi input
Calibrate
Fixed
How To Use Tap
To use Tap is simple. Click on the 'Tap' button or hit 'Spacebar' once every beat. The average tempo 'so far' will be shown in the 'Tempo' box. The number will fluctuate a bit during the first few taps but will gradually narrow in on a final reading.
Once tapping starts, the black border around the Tap button will disappear. This means that Tap is still counting and waiting for the next tap.
If it does not get a tap for 3 seconds it will assume you have finished tapping and the black border will return. The next tap will start a new reading.
An accuracy of 1 decimal place is adequate for most purposes however some sequencers allow a tempo to be 2 or 4 decimal places.
Clicking on the word 'Tempo' will toggle between a reading of either 'BPM' (Beats per minute) or 'FPB' (Frames per beat).
The 'Beats' box contains a number of beats (or fractions of a beat) used to calculate a 'Time' value displayed in the box below in seconds.
Hitting one of the note values on the right will enter the appropriate number in 'Beats' box.
This can be used to calculate a delay setting or a cue length for example.
e.g.,
0.5 beats @ 120 BPM = 0.5 seconds = 500 ms
2 bars = 8 beats @ 105 BPM = 4.571 seconds
Hint: A tempo can also be manually entered into the tempo box if it is already known.
Midi Input
Tap will recognize any note on any midi channel as a tap provided midi is switched on (see preferences). Some midi interfaces such as MidiTimePiece II will convert an audio impulse to a midi note.
Note: even though your midi source might be very accurate, Tap will only start to get accurate after 10 or so taps. This is because of the Mac's internal clock resolution.
Preferences
By pulling down preferences from the file menu you can set the frame rate and sub frames.
You can choose between 24,25 and 30 frames per second. This setting is only relevant if you are viewing tempo in Frames Per Beat.
The sub frames (the number of units a frame can be divided into) can be entered in the box below called 'Bits'.
Normally a single frame of SMPTE is encoded using 80 binary bits of information and some sync boxes exploit this as a way of splitting SMPTE numbers into more accurate values known as Bits. Other sequencing programs however, will divide SMPTE into 1/100ths of a frame, while older click units only divide by 1/8th of a frame.
The midi port and speed are set here.
Hint: switching port to Off will prevent Tap from stealing the serial ports from other active applications such as OMS.
Calibrate
Tap the Mac's internal clock to calculate tempos. However, due to circumstances beyond our control such as inits, the Mac's clock will drift (usually slower) and makes our tempo reading inaccurate. Because of this, I have included a variable called 'TickError' that corrects this. My Mac was running 99.75% slow.
Here's how to make sure you're getting an accurate reading:-
Feed a sequencer click (4/4) into tap via midi. Any note will do, as long as it's quantized and constant.
Let Tap do it's thing for a couple of minutes until the tempo reading settles down. Chances are the tempo reading on Tap will be slightly different than on your sequencer. Go into calibrate (under file menu) and enter the correct number in the box. Notice tap rounds off to the nearest integer.
The problem should now be fixed and saved in Tap's preferences.
If you do not have a source of midi click available, you can tap manually to the seconds hand of a wristwatch and then calibrate to '60.000 BPMs'.
For The Technically Minded
Tap uses the following algorithm to find tempos.
Tickcount is an internal Mac variable that is incremented 60 times a second since power-on.
On the first tap (in a new series) Tickcount is read into a variable called 'FirstTap' and another variable called 'count' is set to zero. Another variable 'LastTap' is set to equal FirstTap.
On the following taps Tickcount is read into 'LastTap' and 1 is added to 'count'. Now Tempo = (LastTap - FirstTap) / count.
Tempo at this point is merely an average interval in ticks. BPM = 60 / (ticks/60)
FPB = FPS * (ticks/60) where FPS = 24,25 or 30.
And so on...
Concerning Bits
When you are viewing the tempo as FPB, the number is not necessarily a true decimal number. That is, the numbers after the decimal point are in "base Bits".
For example, if you have set Bits to 8 in the preferences page then 14.6 really means 14 frames plus 6/8 or 14.75 frames.
Sequencers Aren't Perfect
Some of the sequencers I used to test Tap (including the Roland MC-500) exhibited some tempo inaccuracies. For example, if I calibrated Tap to a 120bpm click from the MC-500 then changed the MC-500 to 240bpm, Tap showed this as 239.799bpm. It also showed 60bpm as 60.023. I proved that this was a fault of the sequencer, not Tap by playing 8th notes at 120bpm. This showed up as 240bpm. Half notes at 120bpm showed up as 60bpm.
Versions
Tap 1.0 Original release.
Tap 1.1 Added note value buttons, edit menu, fixed flickering.
Tap 1.2 Added midi input and Calibrate function, fixed tempo>FPB bit bug.